import { Router } from 'express';
import {
  getAllBooks,
  getBookById,
  createBook,
  updateBook,
  deleteBook,
  getBookStats,
} from '../controllers/book.controller';

/**
 * 图书管理路由配置
 * 定义所有与图书相关的 API 路由
 */
const router = Router();

/**
 * @route   GET /api/books
 * @desc    查询所有图书信息
 * @access  Public
 * @query   page - 页码（默认 1）
 * @query   limit - 每页数量（默认 10）
 * @query   sortBy - 排序字段（默认 createdAt）
 * @query   order - 排序方式 asc/desc（默认 desc）
 * @query   category - 按分类筛选
 * @query   author - 按作者筛选
 * @query   keyword - 关键词搜索（书名、作者、简介）
 */
router.get('/', getAllBooks);

/**
 * @route   GET /api/books/stats/summary
 * @desc    获取图书统计信息
 * @access  Public
 */
router.get('/stats/summary', getBookStats);

/**
 * @route   GET /api/books/:id
 * @desc    根据 ID 查询单本图书信息
 * @access  Public
 * @param   id - 图书 ID
 */
router.get('/:id', getBookById);

/**
 * @route   POST /api/books
 * @desc    新增一本图书
 * @access  Public (实际项目中应该需要管理员权限)
 * @body    title - 书名（必填）
 * @body    author - 作者（必填）
 * @body    publishDate - 出版日期（必填）
 * @body    price - 价格（必填）
 * @body    isbn - ISBN 编号（可选）
 * @body    publisher - 出版社（可选）
 * @body    category - 分类（可选）
 * @body    description - 简介（可选）
 * @body    stock - 库存（可选，默认 0）
 */
router.post('/', createBook);

/**
 * @route   PUT /api/books/:id
 * @desc    更新图书信息
 * @access  Public (实际项目中应该需要管理员权限)
 * @param   id - 图书 ID
 * @body    任意图书字段
 */
router.put('/:id', updateBook);

/**
 * @route   DELETE /api/books/:id
 * @desc    根据 ID 删除一本图书
 * @access  Public (实际项目中应该需要管理员权限)
 * @param   id - 图书 ID
 */
router.delete('/:id', deleteBook);

export default router;
